package com.study.spark.scala.chapter06

object Scala10_Object_Trait_3 {
  def main(args: Array[String]): Unit = {
    // TODO 面向对象 - 特质 - 功能叠加
    new MySql().operData()// 向日志文件中向数据库中操作数据
    // java中不能类的多继承：钻石问题
    // scala中采用了功能叠加的方式解决钻石问题
    // super:上一级的意思，而不是父类的引用对象
  }

  trait Operator{
    def operData(): Unit ={
      println("操作数据")
    }
  }

  trait DB extends Operator{
    override def operData(): Unit = {
      print("向数据库中")
      super.operData()
    }
  }

  trait Log extends Operator{
    override def operData(): Unit = {
      print("向日志文件中")
      // 可以跳过Log的父类的初始化：打印结果结果：向日志文件中操作数据
      super/*[Operator]*/.operData()
    }
  }
  class MySql extends DB with Log {

  }
}


